Network communications are based on protocols. Protocols allow different network components such as devices and servers to communicate in a harmonious manner. A suite of protocols can be used to define different functionality needed to communicate data from one network component to another. Some protocols can be tailored to achieve desired characteristics for data communications. For example, reliable protocols can implement reliability mechanisms that increase the reliability of the data communications. Other protocols may be best-effort and thus unreliable. When communicating through firewalls, not all protocols may be available.